In a many business situations, a particular finite resource may be shared by multiple users. Call centers, for example, are one area where usage can be shared among multiple users. Take for instance the scenario where there are two call centers (A and B) fielding telephone calls. Both call centers are populated with a finite number of agents and can thus handle only a certain volume of calls. Call centers A and B may experience drastically different usage patterns at any given time. For example, at a particular time, call center A may have a surplus of available agents while at the same time, call center B may have reached its maximum capacity. Calls that are directed to call center B may not go through because all available resources (i.e., agents) are currently being used.
In situations like the one described above, it is advantageous to divert a portion of the call traffic that would otherwise go to call center B to call center A. In this regard, the excess capacity at call center A is utilized to field calls from a portion of the calls originally directed to call center B. Of course, only a certain number of calls can be diverted to call center A without overloading call center A's excess capacity.
Various solutions have been proposed and used to route customers to various call centers. One proposed solution is a carrier-based network routing scheme which uses a fixed or static allocation percentage to define how calls are allocated among several call centers. In the above scenario, for example, call center B may divert 20% of its calls to call center A. The problem with this approach is that static percentage allocations cannot take into account variances such as agent availability, call handling times, and call volume changes. For example, setting an allocation percentage too low will leave excess agents at call center A, therefore not maximizing the resources that are available at a given time. Conversely, setting an allocation percentage too high will swamp call center A, thereby blocking callers from reaching call center A. Of course, these problems could be remedied to a certain extent by manually reprogramming the allocation percentage but this would require near constant monitoring and time-consuming reprogramming.
Private networking routing solutions have also been used to balance call loads among a variety of call centers. Many Automatic Call Distributor (ACD) vendors provide overflow routing between their own ACD systems. When one particular ACD approaches its maximum capacity, calls are redirected to another ACD that has a lighter call load. While private network routing systems does provide some advantages over the above-mentioned static allocation percentage approach, private network routing solutions suffer from a number of drawbacks. First, these systems require the use of the same ACD and routing software at each location. Second, a significant amount of hardware is needed to implement the private network solution. Finally, when call overflowing is implemented in private network routing solutions, twice as many resources are consumed for each overflowed call.
More recently, software-based telephony integration systems have been employed to create a virtual call center enterprise. One such system is CISCO's Intelligent Contact Management (ICM) Software. ICM uses an open, distributed software architecture that manages voice and data distribution across enterprise. The software processes a combination of customer and contact center data by using user-defined routing scripts that reflect a company's business rules. The ICM software is then able to route each contact to the optimum resource anywhere in the enterprise. While software-based solutions like CISCO's ICM provide a robust solution to allocate calls efficiently within an enterprise, they are extremely expensive to deploy. Implementation of such systems can cost well over $1,000,000 leaving such systems suitable for only the largest of call centers.
There thus is a need for a relatively low cost, robust system that is able to dynamically allocate calls among a plurality of call centers. The system preferably requires little in the way of hardware to implement. In addition, the system would advantageously not require manual reprogramming in order to respond to changing load conditions at one or more call centers. The method could also apply to other non-call center situations where a finite resource is shared among multiple users.